1976C - Job Interview - CodeForces Solution


binary search dp greedy implementation two pointers

Please click on ads to support us..

Python Code:

def solution():
    n, m = list(map(int, input().split()))
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    total = 0
    lookup = [0]*(n+m+1)
    j = -1
    for i in range(n+m):
        if (a[i] > b[i] and n) or (a[i] < b[i] and not m):
            if (a[i] < b[i] and not m) and j == -1:
                j = i
            lookup[i] = a[i]
            total += a[i]
            n -= 1
        else:
            if (a[i] > b[i] and not n) and j == -1:
                j = i
            lookup[i] = b[i]
            total += b[i]
            m -= 1
    result = [0]*len(lookup)
    result[-1] = total
    for i in range(len(lookup)-1):
        if i < j and (lookup[i] == a[i]) == (lookup[j] != a[j]):
            result[i] = total-lookup[i]+(-lookup[j]+((a[j]+b[j])-lookup[j]))+(a[-1] if lookup[i] != a[i] else b[-1])
        else:
            result[i] = total-lookup[i]+(a[-1] if lookup[i] == a[i] else b[-1])
    return " ".join(map(str, result))

for _ in range(int(input())):
    print(solution())


Comments

Submit
0 Comments
More Questions

1663D - Is it rated - 3
1311A - Add Odd or Subtract Even
977F - Consecutive Subsequence
939A - Love Triangle
755A - PolandBall and Hypothesis
760B - Frodo and pillows
1006A - Adjacent Replacements
1195C - Basketball Exercise
1206A - Choose Two Numbers
1438B - Valerii Against Everyone
822A - I'm bored with life
9A - Die Roll
1430B - Barrels
279B - Books
1374B - Multiply by 2 divide by 6
1093B - Letters Rearranging
1213C - Book Reading
1468C - Berpizza
1546B - AquaMoon and Stolen String
1353C - Board Moves
902A - Visiting a Friend
299B - Ksusha the Squirrel
1647D - Madoka and the Best School in Russia
1208A - XORinacci
1539B - Love Song
22B - Bargaining Table
1490B - Balanced Remainders
264A - Escape from Stones
1506A - Strange Table
456A - Laptops